package Controladores;

import java.text.ParseException;
import java.util.Date;
import negocio.ExcepcionPersistencia;
import negocio.Promocion;
import negocio.Tipo;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 * Clase controladora entre la Vista, la logica de Negocio y la Persistencia de las promociones
 * @author JAVA
 */
public class GestionPromociones {

    public static void addPromocion(String descripcion, float porcentaje, int dias, Date fechaInicio, Date fechaFin, Tipo tipo, String descripcionTipo){
        try {
            Promocion p = new Promocion(descripcion, porcentaje, dias, fechaInicio, fechaFin, tipo, descripcionTipo);
            p.addPromocion(p);
            System.out.println("La promocion se ha añadido correctamente");
        } catch (Exception ex) {
            System.out.println(ex.toString());
        }
    }

    public static void informarPromociones() {
        Promocion.informarPromociones();
    }

    /**
     * Recibe un codigo de la promocion y mediante una llamada a la persistencia lo elimina
     * @param codigo de la promocion a eliminar
     */
    public static void borrarPromocion(int codigo) {
        try {
            Promocion.borrarPromocion(codigo);
            System.out.println("Promocion eliminada correctamente");
        } catch (ExcepcionPersistencia ex) {
            System.out.println(ex.toString());
        }
    }

    /**
     * Llama a la persistencia y recibe una lista con promociones y las muestra por pantalla
     * @return un entero con el numero de promociones existentes
     */
    public static int mostrarPromociones() {
        int i= Promocion.mostrarPromociones();
        return i;
    }

    /**
     * Recibe de la persistencia una lista de promociones actualmente inactivas
     * Recorre dicha lista para imprimir las promociones 
     * @return un entero con el tamaño de la lista de promociones
     */
    public static int mostrarPromocionesInactivas() {
        int i = Promocion.mostrarPromocionesInactivas();
        return i;
    }

    /**
     * Recibe un codigo de la promocion escogida para reactivarla y la pone de nuevo activa
     * @param codigo de la promocion a reactivar
     */
    public static void reactivarPromocion(int cod) {
        try {
            Promocion.reactivarPromocion(cod);
            System.out.println("Excepcion reactivada correctamente");
        } catch (ExcepcionPersistencia ex) {
            System.out.println(ex.toString());
        }
    }

    /**
     * Carga una lista de promociones de la persistencia cuya fecha de fin es inferior a la fecha actual
     * Recorre dicha lista y la muestra por pantalla
     * @return un entero con el numero de promociones en la lista
     */
    public static int mostrarPromocionesVigentes() {
        int i = Promocion.mostrarPromocionesVigentes();
        return i;
    }
    /**
     * Para obtener una promocion pasando el codigo de la promocion
     * @param codtarifa
     * @return 
     */
    public static Promocion ObtenerPromocion(int cod){
        Promocion p=Promocion.obtenerPromocion(cod);
        return p;
    }

    /**
     * Metodo para modificar un atributo de la promocion y establecer su nuevo valor
     * @param nombre del campo a modificar
     * @param valor nuevo a introducir
     * @return 1 si se modifica correctamente
     */
    public static void modificarPromocion(int cod, String nombre, String valor){
        Promocion p = Promocion.obtenerPromocion(cod);
         //String descripcion, float porcentaje, int dias, Date fechaInicio, Date fechaFin, Tipo t, String descripcionTipo
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:");
        System.out.println("la promocion seleccionada es: "+p.getDescripcion());
        if(nombre.compareTo("descripcion")==0){
          p.setDescripcion(valor);
        }else if(nombre.compareTo("porcentaje")==0){
          p.setPorcentaje(Integer.parseInt(valor));                          
        }else if(nombre.compareTo("dias")==0){
          p.setDias(Integer.parseInt(valor));                          
        }else if(nombre.compareTo("fechaInicio")==0){
            try {
                p.setFechaInicio(sdf.parse(valor));
            } catch (ParseException ex) {
                System.out.println(ex.toString());
            }
        }else if(nombre.compareTo("fechaFin")==0){
            try {
                p.setFechaInicio(sdf.parse(valor));
            } catch (ParseException ex) {
                System.out.println(ex.toString());
            }
        }else if(nombre.compareTo("tipo")==0){
          p.setDescripcion(valor);
        }else if(nombre.compareTo("descripcionTipo")==0){
            p.setDescripcionTipo(valor);
        }     
        p.actualizarPromocion();
    }
}
